<!--
 Copyright 2023 Google LLC

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<div id="news"></div>

<script>
document.addEventListener('DOMContentLoaded', () => {
  const JANUARY = 0;
  const FEBRUARY = 1;
  const MARCH = 2;
  const APRIL = 3;
  const MAY = 4;
  const JUNE = 5;
  const JULY = 6;
  const AUGUST = 7;
  const SEPTEMBER = 8;
  const OCTOBER = 9;
  const NOVEMBER = 10;
  const DECEMBER = 11;
  const items = [
    {
      date: new Date(2023, NOVEMBER, 13),
      text: 'Service Weaver at <a href="https://golab.io">GoLab</a> in Florence. Join us for a <a href="https://golab.io/talks/modern-cloud-development-with-service-weaver">workshop</a> on November 19th, or come listen to our <a href="https://golab.io/talks/towards-modern-development-of-cloud-applications">talk</a> on November 21st.',
    },
    {
      date: new Date(2023, NOVEMBER, 9),
      text: 'Now you can deploy Service Weaver applications in any Kubernetes environment. Read the blog post <a href="./blog/kubernetes.html">here</a>.',
    },
    {
      date: new Date(2023, OCTOBER, 16),
      text: 'Service Weaver talk at <a href="https://devfest2023.gdgnantes.com/en/sessions/towards_modern_development_of_cloud_applications/">DevFest Nantes</a> on October 20th. Excited to have <a href="https://cloud.google.com/developers/advocates/valentin-deleplace">Valentin</a> talk about Service Weaver.',
    },
    {
      date: new Date(2023, SEPTEMBER, 18),
      text: 'Service Weaver talk at <a href="https://devoxx.ma/">Devoxx Morocco</a> on October 12th. Excited to have <a href="https://www.linkedin.com/in/sabdelfettah/">Abdel</a> talk about Service Weaver.',
    },
    {
      date: new Date(2023, SEPTEMBER, 15),
      text: 'Service Weaver talk at <a href="https://gdg.community.dev/events/details/google-gdg-coast-lebanon-presents-devfest-beirut-2023-1/">DevFest Beirut</a> on October 7th. Excited to have <a href="https://www.linkedin.com/in/sabdelfettah/">Abdel</a> talk about Service Weaver.',
    },
    {
      date: new Date(2023, SEPTEMBER, 12),
      text: 'Service Weaver <a href="https://www.gophercon.com/agenda/session/1200016">workshop</a> at <a href="https://www.gophercon.com/">GopherCon</a>. See you in San Diego.',
    },
    {
      date: new Date(2023, AUGUST, 11),
      text: 'Thrilled to attend <a href="https://www.gophercon.co.uk/">GopherCon UK</a>. If you are around, come see our talk followed by a <a href="https://www.gophercon.co.uk/unconference/">workshop</a> on August 17th.',
    },
    {
      date: new Date(2023, AUGUST, 7),
      text: 'We will be hosting <a href="https://serviceweaver.dev/workshops.html">workshops</a> in the Bay Area, Dublin, London, and Paris during the week of August 14th. Join us, if you are around!',
    },
    {
      date: new Date(2023, JULY, 31),
      text: 'Honored that the Go team has chosen to showcase Service Weaver as an example of how to use the new <b>gonew</b> feature in Go. More info <a href="https://go.dev/blog/gonew">here</a> and <a href="https://github.com/golang/go/discussions/61669">here</a>.',
    },
    {
      date: new Date(2023, JULY, 18),
      text: 'Excited to be part of the <a href="https://sites.google.com/view/gfsa-cloud/program-overview">Google for Startups Accelerator</a> program. Looking forward to chatting with startups founders about Service Weaver on July 26th.',
    },
    {
      date: new Date(2023, JULY, 10),
      text: 'Join us at the <a href="https://atscaleconference.com/events/systems-scale-summer-2023/">Systems@Scale</a> conference on July 19th if you want to ask us questions about Service Weaver.',
    },
    {
      date: new Date(2023, JULY, 7),
      text: 'Excited to talk about Service Weaver at the <a href="https://gdg.community.dev/events/details/google-gdg-silicon-valley-presents-google-io-extended-silicon-valley-2023/cohost-gdg-silicon-valley">Google I/O Extended Silicon Valley</a> on July 14th and at the <a href="https://gdg.community.dev/events/details/google-gdg-san-jose-presents-google-io-extended-san-jose-in-person-only/">Google I/O Extended San Jose</a> on July 19th.',
    },
    {
      date: new Date(2023, JULY, 3),
      text: 'We recently held Service Weaver workshops in Berlin and Zurich, where we had an amazing time engaging with the local Go and <a href="https://gdg.community.dev/">GDG</a> communities. If you are interested in learning more about Service Weaver, please check out the upcoming <a href="workshops.html">workshops</a>.',
    },
    {
      date: new Date(2023, JUNE, 26),
      text: 'We had a great discussion on how to implement modern cloud applications with the research community at <a href="https://sigops.org/s/conferences/hotos/2023/">HotOS\'23</a>. <a href="./assets/docs/hotos23_vision_paper_slides.pdf">Here</a> are the slides.',
    },
    {
      date: new Date(2023, JUNE, 20),
      text: 'Service Weaver at <a href="https://gophercon.eu/">GopherCon Europe</a>. Come see our talk on June 28th.',
    },
    {
      date: new Date(2023, JUNE, 14),
      text: 'Service Weaver talk at <a href="https://www.techsummit.tech/TechSummitSF">Tech Summit San Francisco</a> on June 23rd.',
    },
    {
      date: new Date(2023, JUNE, 13),
      text: 'Join us on a <a href="https://www.youtube.com/watch?v=KFN-P84YZfk&ab_channel=Changelog">K8s vs serverless for distributed systems</a> podcast today.',
    },
    {
      date: new Date(2023, JUNE, 9),
      text: 'Service Weaver talk at <a href="https://gdg.community.dev/events/details/google-gdg-san-francisco-presents-google-io-extended-san-francisco-in-person/">Google I/O Extended San Francisco</a> on June 21st.',
    },
    {
      date: new Date(2023, JUNE, 2),
      text: 'We are starting a series of Service Weaver workshops. Please check <a href="./workshops.html">here</a> for details.',
    },
    {
      date: new Date(2023, MAY, 20),
      text: 'Service Weaver at <a href="https://devopspro.lt/">DevOps Pro Europe</a> on May 24th.',
    },
    {
      date: new Date(2023, MAY, 17),
      text: 'Vision paper on modern cloud development to appear at <a href="https://sigops.org/s/conferences/hotos/2023/">HotOS\'23</a>. You can read the draft <a href="./assets/docs/hotos23_vision_paper.pdf">here</a>.',
    },
    {
      date: new Date(2023, MAY, 4),
      text: 'Service Weaver at the <a href="https://foci.uw.edu/event_may-2023_workshop-an.html">Workshop on Application Networking</a>, organized by the University of Washington on May 8th.',
    },
    {
      date: new Date(2023, APRIL, 18),
      text: 'We will present Service Weaver at <a href="https://inthecloud.withgoogle.com/cloud-developer-days-warsaw-23/register.html">Warsaw Cloud Developer Day</a> next Tuesday. You can register for the event <a href="https://inthecloud.withgoogle.com/cloud-developer-days-warsaw-23/register.html">here</a>.',
    },
    {
      date: new Date(2023, APRIL, 17),
      text: 'New blog post on <a href="./blog/corba.html">remote method calls, the fallacies of distributed computing, and CORBA</a>.',
    },
    {
      date: new Date(2023, APRIL, 12),
      text: 'We will be at <a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-europe">KubeCon</a> in Amsterdam next week. You can find us in the Google booth.',
    },
    {
      date: new Date(2023, APRIL, 5),
      text: 'New blog post on <a href="./blog/deployers.html">how to implement a Service Weaver deployer</a>.',
    },
    {
      date: new Date(2023, APRIL, 3),
      text: 'Service Weaver at Container Day in Amsterdam. <a href="https://rsvp.withgoogle.com/events/google-container-day">Register</a> if you want to learn more.',
    },
    {
      date: new Date(2023, MARCH, 30),
      text: 'We are now on Discord. Follow us <a href="https://discord.gg/p36aYaaN">here</a>.',
    },
    {
      date: new Date(2023, MARCH, 29),
      text: '<a href="https://uk.linkedin.com/in/matthewmcgibbon1">Matthew</a> presented Service Weaver at <a href="https://twitter.com/womenwhogolndn/status/1641147116683657242">Women Who Go London</a>.',
    },
    {
      date: new Date(2023, MARCH, 24),
      text: 'We will present Service Weaver at <a href="https://www.conf42.com/Cloud_Native_2023_Robert_Grandl_modern_development_distributed_service_weaver">Cloud Native 2023</a>.',
    },
    {
      date: new Date(2023, MARCH, 11),
      text: '<a href="https://www.infoq.com">InfoQ</a> wrote a blog <a href="https://www.infoq.com/news/2023/03/google-weaver-framework">post</a> about Service Weaver.',
    },
    {
      date: new Date(2023, MARCH, 3),
      text: '<a href="https://betterprogramming.pub/service-weaver-a-framework-from-google-for-balancing-monoliths-and-microservices-583e69b274dd">Article</a> on <a href="https://medium.com">Medium</a> about Service Weaver.',
    },
    {
      date: new Date(2023, MARCH, 2),
      text: 'We had a great time <a href="https://twitter.com/kelseyhightower/status/1631352524157648896">talking</a> about Service Weaver with <a href="https://twitter.com/kelseyhightower">Kelsey Hightower</a>.',
    },
    {
      date: new Date(2023, MARCH, 1),
      text: 'We are <a href="https://opensource.googleblog.com/2023/03/introducing-service-weaver-framework-for-writing-distributed-applications.html">live</a>! Thanks <a href="https://twitter.com/kelseyhightower">Kelsey Hightower</a> and <a href="https://twitter.com/JeffDean">Jeff Dean</a> for spreading the word <a href="https://twitter.com/kelseyhightower/status/1630995723956412420">1</a>, <a href="https://twitter.com/JeffDean/status/1631379386476953600">2</a>.',
    },
  ];

  const news = document.getElementById('news');
  for (const item of items) {
    const block = document.createElement('div');
    block.classList.add('news-block');
    const options = { year: 'numeric', month: 'long', day: 'numeric' };
    block.innerHTML = `
      <div class="news-marker"></div>
      <div class="news-content">
        <div class="news-date">${item.date.toLocaleDateString(undefined, options)}</div>
        <div class="news-text">${item.text}</div>
      </div>
    `
    news.appendChild(block);
  }
});
</script>
